220 REM <CTRL-J><CTRL-J>::: INPUT ROUTINE :::<CTRL-J><CTRL-J>
230 REM MARGINS:A=LEFT,B=RIGHT,C=TOP,D=BOTTOM
240 INVERSE : FOR X = C TO D: VTAB X: HTAB A: PRINT SPC( B -1): PRINT : NEXT : REM DRAW "RECIPE CARD"
250 POKE LFT,A -1: POKE TP,C -1: POKE BM,D: POKE WTH,B: REM SET WINDOW
260 A$(0) = "": REM CLEAR FIRST STRING
270 VTAB C: PRINT : VTAB C: HTAB 1: REM POSITION CURSOR
280 STRING = 0: POKE CB,STRING
290 IF POS(X) < >B -1 THEN 320
300 IF PEEK(VC) = D -1 THEN CALL UP: VTAB PEEK(VC): NORMAL : PRINT S$;: INVERSE : PRINT SPC( B -1);: HTAB 1: GOTO 320
310 VTAB PEEK(VC) +2: HTAB 1
320 FLASH : PRINT U$;: INVERSE : WAIT KB,128:A$ = CHR$( PEEK(KB)): IF ASC(A$) <160 OR ASC(A$) >222 OR ASC(A$) = 162 THEN 370
330 A$(STRING) = A$(STRING) +A$
340 IF STRING >57 THEN STRING = 57:A$(58) = "": CALL BP: CALL BP: CALL BP: CALL BP: FLASH : PRINT " THIS FILE IS FULL ! ! ! ": FOR ZZ = 1 TO 1000: NEXT ZZ: GOTO 480
350 HTAB POS(X): PRINT A$;
355 IF LEN(A$(STRING)) = 31 THEN A$ = CHR$(141): GOTO 375
360 POKE CB,0: GOTO 290
370 REM SPECIAL CHARACTER
375 IF A$ = CHR$(141) THEN STRING = STRING +1:A$(STRING) = "": POKE CB,0
377 IF A$ = CHR$(141) AND LEN(A$(STRING -(STRING >0))) <31 THEN PRINT CHR$(8)" ": VTAB PEEK(VC) +1: HTAB 1: INVERSE : PRINT SPC( B -1);: VTAB PEEK(VC) +1: HTAB 1: NORMAL : GOTO 320
378 IF A$ = CHR$(141) THEN 300
380 IF A$ = CHR$(134) THEN 480
390 IF A$ = CHR$(155) THEN NORMAL : POKE CB,0: POP : TEXT : HOME : GOTO 1840
400 IF A$ = CHR$(136) THEN 420
410 PRINT H$;: CALL BP: GOTO 360
420 IF LEN(A$(STRING)) >1 THEN A$(STRING) = LEFT$(A$(STRING), LEN(A$(STRING)) -1): GOTO 450
430 IF NOT LEN(A$(STRING)) THEN 410
440 A$(STRING) = ""
450 PRINT A$S$;
460 IF POS(X) = 1 AND PEEK(VC) >C -1 THEN VTAB PEEK(VC): HTAB B +1
470 GOTO 350
480 POKE CB,0: CALL BP: TEXT : HOME : NORMAL : RETURN
490 REM <CTRL-J><CTRL-J><CTRL-J>::: ENTER RECIPES :::<CTRL-J><CTRL-J>
500 HOME : INVERSE : VTAB 3:A$ = ": FILE NEW RECIPES :": GOSUB 120: NORMAL
510 VTAB 6: FOR X = 0 TO 4: PRINT "<" CHR$(X +65)">. . "CT$(X): NEXT : VTAB 6: FOR X = 5 TO 9: HTAB 23: PRINT "<" CHR$(X +65)">. . "CT$(X): NEXT
520 FOR X = 5 TO 11 STEP 6: VTAB X: PRINT DASH$: NEXT
530 PRINT
540 PRINT "ENTER THE LETTER OF THE": PRINT "APPROPRIATE CATEGORY <A-J>:"U$;: HTAB 28: GET CG$: PRINT CG$: IF CG$ = "" THEN HOME : GOTO 1840
550 CG = ASC(CG$) -65: IF CG <0 OR CG >9 THEN HOME : GOTO 1840
560 PRINT : PRINT "NAME OF RECIPE ";: FOR X = 1 TO 20: PRINT U$;: NEXT : HTAB 15: INPUT ":";NM$
570 IF LEN(NM$) >20 THEN NM$ = LEFT$(NM$,20)
580 IF NOT LEN(NM$) THEN CALL BP: GOTO 500
590 VTAB 19: PRINT "NAME:";: FLASH : PRINT NM$: NORMAL : PRINT : PRINT "CATEGORY:";: FLASH : PRINT CT$(CG): NORMAL
600 PRINT : PRINT "IS THE ABOVE INFO CORRECT <Y/N>?"U$;: HTAB 33: GET YN$: PRINT YN$: IF YN$ < >"N" THEN 620
610 VTAB 14: CALL CT: GOTO 540
620 REM INPUT THE RECIPE
630 INPT = 1: REM FLAG FOR CENTERING SUBR
640 HOME :A$ = NM$ +" (" +CT$(CG) +")": GOSUB 120
650 PRINT :A$ = ".....TYPE THE RECIPE BELOW.....": GOSUB 120
3330 REM <CTRL-M><CTRL-M> :::: POKE SEARCH ::::<CTRL-M><CTRL-M>
3340 POKE 1013,76: POKE 1014,0: POKE 1015,3: REM JMP $300
3350 FOR X = 768 TO 879: READ Y: POKE X,Y: NEXT : RETURN
3360 DATA 32,227,223,133,6,132,7,160,0,132,26,177,6,133,24,200,177,6,72,200,177,6,133,7,104,133,6,32,190,222,32,227,223,133,8,132,9,160,0,177,8,133,25,200,177,8,72,200,177,8,133,9
3370 DATA 104,133,8,165,24,240,30,197,25,144,26,165,25,240,22,165,24,56,229,25,133,27,160,0,177,6,209,8,208,8,200,196,25,144,245,230,26,96,230,26,165,27,197,26,144,8,230,6,208,2,230,7,208,224,169,0,133,26,240,233
3999 REM <CTRL-M><CTRL-M> :::: EDIT RECIPES ::::<CTRL-M><CTRL-M>
4838 IF X >19 AND LL <20 THEN VTAB 23: CALL -868: INVERSE : PRINT "LINE NUMBER TOO SMALL!<CTRL-G><CTRL-G><CTRL-G>";: FOR ZZ = 1 TO 1000: NEXT ZZ: GOTO 4837
4839 IF LL >X THEN VTAB 23: CALL -868: INVERSE : PRINT "LINE NUMBER TOO LARGE!<CTRL-G><CTRL-G><CTRL-G>";: FOR ZZ = 1 TO 1000: NEXT ZZ: GOTO 4837
4848 IF E$ = CHR$(13) THEN GOSUB 4970:IN = 0:A$(LL) = A$: GOTO 4800: REM <RETURN>...ENDS EDITING OF LINE
4849 IF E$ = CHR$(2) THEN C = 5: GOTO 4845: REM CTRL-B ... BEGINNING OF LINE
4850 IF E$ = F$ THEN FI = 1
4851 IF E$ = CHR$(27) THEN TEXT : HOME : GOTO 1840: REM ESC ... TO MENU
4852 IF E$ = CHR$(8) THEN C = C -1 +(C <6): GOTO 4845: REM CTRL-H ... <--
4854 IF E$ = CHR$(21) THEN C = C +1 -(C >( LEN(A$) +3)): GOTO 4845: REM CTRL-U ... -->
4856 IF E$ = CHR$(4) AND C = 5 THEN A$ = RIGHT$(A$, LEN(A$) -1): GOSUB 4970: GOTO 4845: REM CTRL-D ... DELETE CHARACTER ... BEGINNING OF LINE
4857 IF E$ = CHR$(4) AND C >5 AND C <( LEN(A$) +4) THEN A$ = LEFT$(A$,C -5) + RIGHT$(A$, LEN(A$) -(C -4)): GOSUB 4970: GOTO 4845: REM CTRL-4...DELETE CHARACTER MIDDLE OF LINE
4858 IF E$ = CHR$(4) AND C = LEN(A$) +4 THEN A$ = LEFT$(A$, LEN(A$) -1):C = LEN(A$) +5: GOSUB 4970: GOTO 4845: REM CTRL-D ...DELETE CHARACTER ... END OF LINE
4859 IF E$ = CHR$(4) AND C > LEN(A$) +4 THEN GOTO 4845: REM CTRL-D...PAST END OF LINE
4860 IF E$ = CHR$(9) THEN IN = 1: GOTO 4846
4862 IF IN = 1 AND C = 5 THEN A$ = E$ +A$: GOSUB 4970:C = C +1: GOTO 4846
4864 IF IN = 1 AND C >5 THEN A$ = LEFT$(A$,C -5) +E$ + RIGHT$(A$, LEN(A$) -(C -5)): GOSUB 4970:C = C +1: GOTO 4846
4865 IF E$ = CHR$(6) THEN FI = 1: GOTO 4846
4866 IF FI = 1 THEN GOTO 4990
4867 IF LEN(A$) = 34 THEN PRINT "<CTRL-G>": GOTO 4845
4868 IF LEN(A$) = C -4 THEN A$ = LEFT$(A$,C -5) +E$:C = C +1 -(C >39): GOSUB 4970: GOTO 4845
4869 IF LEN(A$) = C -5 THEN A$ = LEFT$(A$,C -5) +E$:C = C +1 -(C >39): GOSUB 4970: GOTO 4845
4870 IF C >5 THEN A$ = LEFT$(A$,C -5) +E$ + RIGHT$(A$, LEN(A$) -(C -4)):C = C +1: GOSUB 4970: GOTO 4845
4872 IF C = 5 THEN A$ = E$ + RIGHT$(A$, LEN(A$) -1):C = C +1: GOSUB 4970: GOTO 4845
4992 IF MID$ (A$,I,1) = E$ THEN C = I +4:I = LEN(A$)
4994 NEXT I
4996 GOSUB 4970:F$ = E$: GOTO 4846
4999 REM <CTRL-M><CTRL-M> :::: ADD A LINE ::::<CTRL-M><CTRL-M>
5000 VTAB 23: HTAB 1: CALL -868: INVERSE : INPUT " ADD WHICH LINE?...";LL: NORMAL
5005 IF LL >X OR LL <(20 *(X >19) +20 *(X >39)) THEN VTAB 23: HTAB 1: CALL -868: INVERSE : PRINT "ILLEGAL LINE NUMBER!<CTRL-G><CTRL-G><CTRL-G>": FOR ZZ = 1 TO 1000: NEXT ZZ: GOTO 5000
5010 LNGTH = LNGTH +1
5012 IF LNGTH >54 THEN VTAB 23: HTAB 1: CALL -868: INVERSE : PRINT "FILE IS FULL - CANNOT ADD A LINE!<CTRL-G><CTRL-G><CTRL-G>": FOR ZZ = 1 TO 1000: NEXT ZZ: NORMAL :X = 20 *(X >19) +20 *(X >39): GOTO 4390
5049 REM <CTRL-M><CTRL-M> :::: DELETE A LINE ::::<CTRL-M><CTRL-M>
5050 VTAB 23: HTAB 1: CALL -868: INVERSE : INPUT " DELETE WHICH LINE?...";LL: NORMAL
5055 IF LL >X OR LL <(20 *(X >19) +20 *(X >39)) THEN VTAB 23: HTAB 1: CALL -868: INVERSE : PRINT "ILLEGAL LINE NUMBER!<CTRL-G><CTRL-G><CTRL-G>": FOR ZZ = 1 TO 1000: NEXT ZZ: GOTO 5050
5057 IF LL = LNGTH THEN 5075
5060 FOR I = LL +1 TO LNGTH
5065 A$(I -1) = A$(I)
5070 NEXT I
5075 A$(LNGTH) = "":LNGTH = LNGTH -1
5080 Y = 20 *(X >19) +20 *(X >39): GOTO 4390
6000 C = 5: VTAB (LL -20 *(LL >19) +3): HTAB C
6005 INPUT "";A$(LL)
6010 GOTO 4800
9000 REM
9010 REM FILES CREATED WITH
9020 REM "RECIPE.FILE" &
9030 REM "RECIPE FILE 1.2"
9040 REM ARE COMPATIBLE WITH
9050 REM "RECIPE FILE 1.3"
9060 REM
9070 REM PUBLISHED IN
9080 REM SOFTDISK MAGAZETTE
9090 REM 3811 ST. VINCENT
9100 REM SHREVEPORT, LA
9110 REM 71108
9120 REM
9130 REM 1.3 - 8/19/82
9140 REM
10000 FOR X2 = 0 TO LNGTH:B$(X2) = A$(X2):A$(X) = "": NEXT X2
10010 NN = -1
10020 FOR X2 = 0 TO LNGTH: FOR X1 = 0 TO 6
10030 IF MID$ (B$(X2),X1 *31 +1,31) < >"" THEN NN = NN +1:A$(NN) = MID$ (B$(X2),X1 *31 +1,31)